package gf

import (
	"io/fs"
	"os"
)

// FileStatus 结构体用于表示文件操作的状态和相关信息。
type FileStatus struct {
	Success  bool        // 是否操作成功
	AbsPath  string      // 文件绝对路径
	FileName string      // 需要操作的文件名
	FileList []string    // 文件列表
	DirList  []string    // 文件夹列表
	Err      error       // 错误信息(读写操作错误的信息)
	Text     string      // 最终字符串信息(例如文本读取信息)
	IsDirs   bool        // 是否属于文件夹
	IsFiles  bool        // 是否属于文件
	ExIst    bool        // 是否存在对象
	open     *os.File    // 文件结构
	stat     os.FileInfo // 文件信息
	Perm     fs.FileMode // 文件所属权限
	FileErr  *FileErr    // 文件错误
}

// FileErr 结构体用于定义与文件操作相关的错误。
// 它封装了三种常见的文件错误情况，使得错误处理更加具体和方便。
type FileErr struct {
	FileIsNotExists error // 文件不存在: 当尝试访问或操作一个不存在的文件时返回的错误。
	PathIsFile      error // 这个路径是一个文件: 当路径指向一个文件而非目录时返回的错误。
	PathIsdir       error // 这个路径是一个文件夹: 当路径指向一个目录而非文件时返回的错误。
}

// ReadScreen 是一个用于API读取屏幕操作的结构体
type ReadScreen struct {
	Text     string   // Text用于存储字符串内容
	textOld  string   // textOld用于存储首次初始化的内容(读取内容)
	Err      error    // Err用于存储错误信息
	FileName string   // FileName用于存储需要操作的文件名
	Slice    []string // Slice用于存储切片
	han      Text     // han用于存储处理实例
}

// Text 是一个用于文本处理的结构体
type Text struct {
	Text    string   // Text 用于存储处理后的文本内容
	texts   string   // texts 用于存储传入的初始文本内容，注意：此字段以小写开头，表示它是私有的
	Slice   []string // Slice 用于存储处理后的文本切片内容
	Err     error    // Err 用于存储在文本处理过程中可能发生的错误信息
	GrepErr error    // GrepErr 用于存储在筛选文本过程中可能发生的错误信息
	ColErr  error    // ColErr 用于存储在截取文本列时可能发生的错误信息
	LineErr error    // LineErr 用于存储与行处理相关的错误信息
}

// FileMan 结构体用于管理文件操作的相关信息。
// 它包含了源文件和目标文件的路径、文件名、格式等信息，以及操作过程中可能出现的错误和文件句柄。
type FileMan struct {
	PathAbs    string   // 操作对象绝对路径
	PathBase   string   // 操作对象基础文件名
	PathFormat string   // 操作对象文件格式
	Src        string   // 源文件
	SrcAbs     string   // 源文件绝对路径
	SrcBase    string   // 源文件基础文件名
	SrcFormat  string   // 源文件格式
	Dst        string   // 目标文件
	DstAbs     string   // 目标文件绝对路径
	DstBase    string   // 目标文件基础文件名
	DstFormat  string   // 目标文件格式
	Err        error    // 错误
	fileSrc    *os.File // 文件句柄
	fileDst    *os.File // 文件句柄
}
